Lookerベスト・プラクティス:埋め込み分析におけるセキュリティ #looker
Lookerではトピック毎のベストプラクティスを個別にドキュメントやナレッジベースとしてまとめています。当エントリではその中から、『埋め込み分析におけるセキュリティ』についてご紹介したいと思います。
目次
はじめに
Lookerの組み込み式分析機能である「Powered by Looker」を使用すると、HTML形式のWebページ/ポータル/アプリケーションのiframeに埋め込まれたデータをユーザーや顧客が閲覧出来るようになります。
Introducing Powered by Looker from Looker on Vimeo.
iframeはLookerアプリケーション全体を実行し、クエリの表示を行うために必要なデータのみをリクエストします。設計上、iframeは外部Webサイトまたはアプリケーションから、Lookerのデータを読み書きすることは許可されていません。
この方式を使う際、プライバシーまたはセキュリティ上の懸念が発生する場合があります。これらの懸念を軽減するために、Looker管理者は当エントリで紹介する「ベスト・プラクティス」に従うことをお勧めします。
- Lookerコンテンツを埋め込みの形式で顧客に提供する場合、内部分析に使用するインスタンスとは別のLookerインスタンスを用意し、設定する。
- Looker埋め込みインスタンスにのみ、データを接続。Looker埋め込みインスタンスには、(一般公開される場合がある)埋め込みユーザーがアクセス出来るようにする必要があります。
- パブリック埋め込みURL内のランダムトークンはユーザー資格情報として保護し、公開URLが使用されていない場合は無効とする。
- クローズドシステムを有効にする。
- SSO埋め込みシークレットを、(埋め込まれたLookerインスタンスの)管理者資格情報として保護する。SSO埋め込みを使用しない場合は無効にしておく。
- Looker埋め込みインスタンスに対し、強力な認証方式を適用させる。Lookerでは以下の方式に対応しています。
Lookerでは、必要な認証レベル(パブリック、プライベート、シングルサインオン)に応じて、様々な種類の埋込方法を提供しています。これらいずれの方法でも、Javascriptを活用することでiframeとの対話が可能です。
パブリックな埋め込み
Lookerのパブリックアクセスオプションを有効にすると、HTMLのiframeタグを使用した視覚化、またはデータテーブルを外部Webサイトに埋め込むことが出来ます。Look URLを公開・共有、GoogleやExcelスプレッドシートアプリケーションにデータをインポートする事なども可能となります。
iframeタグ内のURL及び埋め込みURLには"ランダムトークン"が含まれているため推測は出来ませんが、埋め込みURLを持つユーザーであれば誰でもデータにアクセス出来、追加のフィルタリングや制限は適用されません。パブリックアクセスオプションを有効にする前に、特定のLookやパブリックURLを作成、及び有効にすることのセキュリティ面の影響を考慮しておくことを強く推奨します。
※公開URLと公開埋め込みURLは期限切れになることはなく、取り消すことは出来ません。操作を行うと、実際のデータでは無く、クエリを共有する形となります。
プライベートな埋め込み
Lookerへのパブリックアクセスを許可しない場合、LookやExplore、ダッシュボードをiframeにプライベートな形で埋め込み、コンテンツを表示する際にはLookerへのログインが必要になるように設定することも出来ます。
認証されたユーザーは、割り当てられたアクセス許可設定によって、指示されたコンテンツにのみアクセス出来るようになります。Looker側で権限を変更しても埋め込みURL自体は変更はされませんが、ユーザーがURLにアクセスした際に表示されるものは変わる可能性があります。
ユーザー認証がなされていない場合、Lookerはiframeにエラーまたはログイン画面を表示出来ます。(※ただし、iframeでログイン画面を有効にすることはLookerのSame-Origin Policy(同一生成元ポリシー)と互換性がありません。)
※プライベート埋め込みURLは期限切れになることは無く、取り消すことは出来ません。ただし、リンクはLookerインスタンスとそのデータにアクセス出来るユーザーに対してのみ機能するため、リンクを送信してもセキュリティ上の問題は発生しません。
シングルサインオンでの埋め込み
※この機能におけるライセンスを更新するには、アカウントマネージャーにお問い合わせください。
シングルサインオンの埋め込みでは、プライベートな埋め込みを更に一歩推し進めた形となります。この方式は、ユーザーがLookerユーザーアカウントを介して認証する必要がなくなります。代わりに、iframe内のURLを介して独自のアプリケーションで認証出来ます。認証により、新しいブラウザセッションが作成され、ブラウザにCookieが発行されます。
ユーザーのアクセス許可、識別子、及び属性は全て、秘密鍵で署名されたURL内のパラメータとして渡されます。
秘密鍵にアクセス出来る人は誰にでも、Lookerインスタンスが接続されているモデルにアクセスするためのURLを作成することが出来ます。署名付きURLの生成方法については以下ドキュメントをご参照ください。
※クリックジャッギング(Clickjacking)は、埋め込みコードまたはスクリプトが、ユーザの知らないうちに同意無しで機能を実行した場合に発生する可能性のある、ブラウザにおけるセキュリティの問題です。通常、クリックジャッギングには静的URLが必要となります。SSO埋め込み用に生成されたURLは秘密であり、埋め込みを表示するユーザーのみがURLを生成する必要があります。SSO埋め込みを使用しても、外部Webサイトへのクリックジャックのリスクは増えません。
SSO埋め込みパラメータ
iframeのURLに含まれるパラメータは、埋め込みユーザーには表示されますが編集は出来ません。これら要素には以下のものが含まれます。
- user_attributes and access_filters:データを更にフィルタリングする為に使用。User Attributesは特に強力なものなので、Lookerインスタンスにどのように適用出来るかどうかを検討してください。
- session_length:これを必要最小限の時間に保ちます。
user_attributesなどの一部のパラメータは、UI上で非表示とすることは出来ますが、埋め込みURLでエンコードされます。例えば、パスワードがユーザーのuser_attribute内の値である場合、望ましくない場合があります。これを回避する方法の1つは、一時グループを作成し、パスワードをグループレベルの属性として設定してから、埋め込みURLでグループIDを渡すことです。埋め込みセッションの後にグループを削除して、グループの過剰な使用を避けることが出来ます。
URLの署名部分にはタイムスタンプ情報が含まれます。URLを使用してサインオンすると、その時間は現在の時間から+/-5分で無ければなりません。session_lengthで、URLを使用してログインした時から埋め込みセッションが続く時間を指定出来ます。
SSO埋め込みのアクセス管理
埋め込みコンテンツのURLを作成する場合、気を付けるのは以下のポイントです。
- 必要な最低限レベルの許可を設定・使用します。
- ユーザーがアクセス出来る特定のモデルにのみアクセスを割り当てます。
- group_idsを使用してユーザーをグループに割り当て、埋め込みユーザーがLookerスペースのアクセスを制御出来るようにします。
Looker API
LookerのAPIを使用して埋め込みコンテンツへのアクセスを有効にする場合、以下をお勧めします。
- 最小限の必要な特権セットで、プログラムAPIアクセス用の専用サービスアカウントを作成。
- API3キーを構成するクライアントIDとクライアントシークレットを保護(SDK認証の場合)。
APIを介して埋め込みユーザーに設定されているが、SSO URLで指定されていないユーザー属性には、次回SSO URLにアクセスした際にデフォルト値にリセットされます。
埋め込みJavascriptイベント
埋め込みiframeを設定後、(パブリック、プライベート、SSO経由、API経由などで)Javascriptを介したiframe操作が実行可能です。
対象の情報がLookerのiframeから実際に取得されたことを検証するには、Javascriptイベントをリッスンします。
ドメインをホワイトリストに登録する場合、ワイルドカードのみを使用して、特定のサブドメインがJavascriptイベントにアクセス出来るようにします。
Javascriptのeval関数を使用する場合、eval関数の文字列値がLookerサーバやCDN等の信頼出来るソースからのものであり、HTTPSトランスポート下にあることを確認します。
Looker CDNを通過する顧客データはありません。Looker Webアプリケーションの静的アセット(Javascriptコード、HTMLページ、CSSスタイル)のみがCDNから提供されます。
まとめ
というわけで、Lookerにおける『Lookerユーザーにポジティブな体験を提供する方法』のご紹介でした。
Lookerでは当エントリで紹介したように、様々な形で『埋め込み分析』を利用可能です。対応するセキュリティ面の考慮ポイントについてもまとめられていますので、利用の際にはそれらのポイントを見極めて上手く展開・活用していきたいところですね。